package com.gt.aep.base.dao.systemManage;

import com.gt.aep.base.entity.systemManage.SysUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface SysUserDao {

    /**
     * 新增用户
     * @param sysUser
     * @return
     */
    int insert(SysUser sysUser);

    /**
     * 更新用户数据
     * @param sysUser
     * @return
     */
    int update(SysUser sysUser);

    /**
     * 批量删除用户
     * @param ids
     * @return
     */
    int delete(String[] ids);

    /**
     * 根据用户信息获取用户列表
     * @param sysUser
     * @return
     */
    List<SysUser> getList(SysUser sysUser);

    /**
     * 根据用户信息获取符合条件的用户数量
     * @param sysUser
     * @return
     */
    int getCount(SysUser sysUser);

    /**
     * 根据用户名查询--精确查询
     * @param userName
     * @return
     */
    SysUser getUserByUserName(@Param("userName") String userName);

    /**
     * 更新用户头像
     * @param sysUser
     * @return
     */
    int updateUserPicUrl(SysUser sysUser);


    /**
     * 根据用户名获取用户基本信息和角色信息
     * @param userName
     * @return
     */
    Map<String, Object> getUserRoleInfo(@Param("userName") String userName);

    /**
     * 根据用户名，登陆者id获取符合条件的用户列表
     * -用户名模糊查询
     * 分页查询
     * @param curr
     * @param limit
     * @param userName
     * @param loginUid
     * @return
     */
    List<SysUser> getUserListForIndex(@Param("curr") int curr, @Param("limit") int limit, @Param("userName") String userName, @Param("loginUid") String loginUid);
    int getUserCountForIndex(@Param("userName") String userName, @Param("loginUid") String loginUid);

    /**
     * 根据用户id修改用户密码
     * @param userId
     * @param password
     * @return
     */
    int changePassword(@Param("userId") String userId, @Param("password") String password);
}
